#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<assert.h>

// 队列： 不带头单向链表实现

 typedef int QDataType;
 typedef struct QueueNode
{
	QDataType val;
	struct QueueNode* next;
}QNode;

  typedef struct Queue
 {
	 QNode* phead;
	 QNode* ptail;
	 int size;
 }Queue;


  // 初始化、销毁
  void QueueInit(Queue* pq);
  void QueueDestroy(Queue* pq);

  // 入队列
  void QueuePush(Queue* pq, QDataType x);
  // 出队列
  void QueuePop(Queue* pq);

  // 队头、队尾数据
  QDataType QueueFront(Queue* pq);
  QDataType QueueBack(Queue* pq);

  int QueueSize(Queue* pq);
  bool QueueEmpty(Queue* pq);


